package eventdisplay;

import java.util.ArrayList;
import processing.core.*;
import remixlab.proscene.InteractiveFrame;
import remixlab.proscene.Scene;

public class TrackData {

    PApplet parent;
    String[] lines;
    String[] values;
    String run;
    String snarl;
    String date;
    String time;
    float[][] particleTrace;
    float Qmax, Qmin, realRange;
    int colRange;

    ArrayList track;
    InteractiveFrame iFrame;

    TrackData(PApplet p, String fileName) {
        parent = p;
        lines = parent.loadStrings(fileName);
        run = lines[0];
        snarl = lines[1];
        date = lines[2];
        time = lines[3];
        values = lines[5].split(",");
        particleTrace = new float[lines.length - 5][values.length];

        for (int i = 5; i < lines.length; i++) {
            values = lines[i].split(",");
            for (int j = 0; j < values.length; j++) {
                particleTrace[i - 5][j] = (float) (Float.parseFloat(values[j]) * 47.8);
            }
            if (Float.parseFloat(values[5]) > Qmax) {
                Qmax = Float.parseFloat(values[5]);
            }
            if (Float.parseFloat(values[5]) < Qmin) {
                Qmin = Float.parseFloat(values[5]);
            }
        }
        realRange = Qmax - Qmin;
        colRange = (int) (3 * realRange / 2);
    }

//	public void drawVert(int col) {
//		parent.colorMode(parent.HSB, Qmax);
//		parent.beginShape(parent.POINTS);
//		for (int i = 0; i < particleTrace.length; i++) {
//			parent.fill(particleTrace[i][5] - Qmin, colRange, col);
//			parent.vertex(particleTrace[i][1], particleTrace[i][2], particleTrace[i][3]);
//		}
//		parent.endShape();
//		parent.colorMode(parent.RGB, 255);
//	}
//	public void drawVertAnim(int len, int col, Timer time) {
//		parent.noStroke();
//		parent.colorMode(parent.HSB, Qmax);
//		for (int i = 0; i < particleTrace.length; i++) {
//			// parent.pushMatrix();
//			parent.fill(particleTrace[i][5] - Qmin, colRange, col);
//			parent.vertex(particleTrace[i][1], particleTrace[i][2], particleTrace[i][3]);
//			// parent.popMatrix();
//		}
//		parent.colorMode(parent.RGB, 255);
//	}
//	public void drawVertSphere(int col) {
//		parent.noStroke();
//		parent.colorMode(parent.HSB, Qmax);
//		parent.sphereDetail(1);
//		for (int i = 0; i < particleTrace.length; i++) {
//			parent.pushMatrix();
//			parent.fill(particleTrace[i][5] - Qmin, colRange, col);
//			parent.translate(particleTrace[i][1], particleTrace[i][2], particleTrace[i][3]);
//			parent.sphere(2);
//			parent.popMatrix();
//		}
//		parent.colorMode(parent.RGB, 255);
//	}
    public void drawVertSphereAnim(int len) {



        parent.noStroke();
        parent.smooth();
        parent.colorMode(parent.HSB, colRange);
        parent.sphereDetail(2);


        for (int i = 0; i < len; i++) {
            parent.pushMatrix();
            
            parent.fill(particleTrace[i][5] - Qmin, colRange, colRange);
            parent.translate(particleTrace[i][1], -particleTrace[i][2], particleTrace[i][3]);
            parent.sphere(2);
            
            parent.popMatrix();
        }
        parent.colorMode(parent.RGB, 255);





    }

    public void finalize() {
        lines = null;
        values = null;
        run = null;
        snarl = null;
        date = null;
        time = null;
        particleTrace = null;
    }
}
